home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
docs
/
ippon
/
zmdplay
/
zmdplay.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-07-07
|
2KB
|
107 lines
/* zmdplay.c */
#include <stdio.h>
#include <stdlib.h>
#include <sys/iocs.h>
#include "zmcall.h"
void usage (void)
{
printf (
".ZMD ファイルを演奏するテスト zmdplay.x ver0.01\n"
" programmed by Mitsuky <FreeSoftware>\n"
"PT034MK.ZMD を読み込んで演奏し、AXE0004.PCM を再生します\n"
);
}
int main (int argc, char *argv[])
{
FILE *fp;
void *zmd_file, *pcm_file;
int zmd_size, pcm_size;
if (argc > 1) {
usage ();
return (-1);
}
/* PT034MK.ZMD をメモリに読み込む */
fp = fopen ("PT034MK.ZMD", "rb");
if (fp == NULL) {
printf ("PT034MK.ZMD が読み込めません\n");
return (-1);
}
fseek (fp, 0, SEEK_END);
zmd_size = ftell (fp);
fseek (fp, 0, SEEK_SET);
zmd_file = malloc (zmd_size);
if (zmd_file == NULL) {
printf ("メモリが足りません\n");
return (-1);
}
fread (zmd_file, sizeof (char), zmd_size, fp);
fclose (fp);
/* AXE0004.PCM をメモリに読み込む */
fp = fopen ("AXE0004.PCM", "rb");
if (fp == NULL) {
printf ("AXE0004.PCM が読み込めません\n");
return (-1);
}
fseek (fp, 0, SEEK_END);
pcm_size = ftell (fp);
fseek (fp, 0, SEEK_SET);
pcm_file = malloc (pcm_size);
if (pcm_file == NULL) {
printf ("メモリが足りません\n");
return (-1);
}
fread (pcm_file, sizeof (char), pcm_size, fp);
fclose (fp);
if (ZmKeepCheck () < 0) {
printf ("ZMUSIC が常駐していません\n");
return (-1);
}
ZmInit (); /* ZMUSIC 初期化 */
ZmPlay (zmd_file, zmd_size); /* .ZMD を演奏する */
printf ("ジョイスティックの [A] ボタンを押すと効果音を再生します\n"
"[B] ボタンで終了します\n");
for (;;) {
int j; /* ジョイスティックの入力 */
j = _iocs_joyget (0); /* ジョイスティック0番 */
/* [A] ボタンが押されたか? */
if ((j & 0b00100000) == 0) {
ZmAdpcmSE (pcm_file, pcm_size, 4 * 256 + 3, 0); /* 効果音再生 */
/* [A] ボタンが離されるのを待つ */
while ((_iocs_joyget (0) & 0b00100000) == 0);
}
/*
ZmAdpcmSE() の引き数
ADPCM データへのポインタ,
ADPCM データのサイズ,
周波数*256+PAN,
優先順位
*/
/* [B] ボタンが押されたか? */
if ((j & 0b1000000) == 0)
break;
}
ZmStop (); /* 音楽停止 */
free (zmd_file);
free (pcm_file);
return (0);
}